home *** CD-ROM | disk | FTP | other *** search
/ Atlas of U.S. Presidents / Atlas of U.S. Presidents.iso / aomc.mst < prev    next >
Text File  |  1995-11-16  |  30KB  |  841 lines

  1. '****************************************************************************
  2. '**                  AOMC Install Script - Doc Apps                        **
  3. '****************************************************************************
  4. DIM Arg$(4)                  '' Set maximum command line arguments to 4
  5. GOSUB CmdLine                '' MUST be done BEFORE including 'setupapi.inc'
  6. IF Arg$(3) = "NOAUDIO" THEN  '' Check user argument 1
  7.   NOAUDIO% = 1
  8.   GOTO INCs
  9. END IF
  10. IF Arg$(4) = "NOAUDIO" THEN  '' Check user argument 2
  11.   NOAUDIO% = 1
  12.   GOTO INCs
  13. END IF
  14. '$DEFINE AUDIO_ENABLED       '' User hasn't turned audio off, so play it
  15. INCs:
  16. '$INCLUDE 'setupapi.inc'
  17. '$INCLUDE 'msdetect.inc'
  18. '$INCLUDE 'aomc.inc'
  19. '$IFDEF AUDIO_ENABLED        '' User has turned audio off, so don't load func
  20.   DECLARE FUNCTION sndPlaySound LIB "MMSYSTEM.DLL" (AudFilename$, Flags%) AS INTEGER
  21. '$ENDIF ''AUDIO_ENABLED
  22.  
  23. '****************************************************************************
  24. Group$              = "AOMCApps"           '' Group name for Shell
  25. AppTitle$           = "Atlas of U.S. Presidents - V2.1" '' Application Title for Shell
  26. AppExeName$         = "\APRES2.EXE"          '' Application Executable Name for Shell
  27. AppDir$             = "\AP2EXE"            '' Application directory on CD-ROM
  28. ProgRoot$           = "\AP2"               '' Application default directory on HD
  29. RT$                 = "\RUNTIME\"          '' Directory on CD-ROM where VfW Runtime resides
  30. MSOBitmap$          = "AP2.BMP"            '' MS Office bitmap file for AppTitle$
  31. Win3xInfoEXE$       = "WRITE.EXE"          '' Windows 3.x Application to handle InfoFile$
  32. Win95InfoEXE$       = "WORDPAD.EXE"        '' Windows 95 Application to handle InfoFile$
  33. InfoFile$           = "\README.WRI"        '' Information filename - must be compatible with InfoExe$
  34. OtherAppsTitle$     = "Other AOMC Applications"  '' Title for Other Apps Help File
  35. OtherAppsFile$      = "\Others.hlp"         '' Other Apps Help Filename
  36. WantedDiskSize&     = 2048000              '' Disk space needed for minimum installation
  37. FullWantedDiskSize& = 40960000             '' Disk space needed for full installation
  38. '****************************************************************************
  39.  
  40.  
  41. '****************************************************************************
  42. '**                          Beginning of script                           **
  43. '****************************************************************************
  44. INIT:
  45.  
  46.     WIN32ENABLED% = 0
  47.     VfWFailed% = 0
  48.  
  49.     SrcDir$ = GetSymbolValue("STF_SRCDIR")
  50.     SrcDrive$ = MID$(SrcDir$,1,1) + ":"
  51.     WinDir$ = GetWindowsDir()
  52.     WinSysDir$ = GetWindowsSysDir()
  53.     WinSys32Dir$ = WinDir$ + "system32"
  54.  
  55.     OpenLogFile WinDir$ + "AOMC.LOG", 0
  56.     WriteToLogFile ""
  57.     WriteToLogFile "                          AOMC Install LOG file"
  58.     WriteToLogFile ""
  59.     WriteToLogFile "Windows directory is " + WinDir$
  60.     WriteToLogFile ""
  61.     WriteToLogFile "Group      = " + Group$
  62.     WriteToLogFile "AppTitle   = " + AppTitle$
  63.     WriteToLogFile "AppDir     = " + AppDir$
  64.     WriteToLogFile "AppExeName = " + AppExeName$
  65.     WriteToLogFile "SrcDrive   = " + SrcDrive$
  66.     WriteToLogFile ""
  67.     IF NOAUDIO% = 0 THEN
  68.         WriteToLogFile "Audio Enabled."
  69.      ELSE
  70.         WriteToLogFile "Audio Disabled by user."
  71.     END IF
  72.     WriteToLogFile ""
  73.  
  74.     CUIDLL$    = "mscuistf.dll"          ''AOMC user interface dll
  75.     HELPPROC$  = "FHelpDlgProc"          ''Help dialog procedure
  76.  
  77.     MajorVer% = GetWindowsMajorVersion()
  78.     MinorVer% = GetWindowsMinorVersion()
  79.  
  80.     IF  MajorVer% < 3 OR (MajorVer% = 3 AND MinorVer% < 10) THEN
  81.         i% = DoMsgBox("Microsoft Windows version 3.10 or greater is required for this software.  Please upgrade your version of Windows.", "Installation Problem", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  82.         WriteToLogFile "ERROR: Microsoft Windows version was " + str$(MajorVer%) + "." + str$(MinorVer%)
  83.         CloseLogFile
  84.       END
  85.     END IF
  86.  
  87.     ' Use Wowexec to determine version of NT.  3.1 did not stamp wowexec and wow returns 3.1 as version
  88.     IF OnWindowsNT() THEN
  89.       OnNT$ = "TRUE"
  90.       WowVersion$ = GetVersionOfFile(WinSys32Dir$ + "\wowexec.exe")
  91.       IF WowVersion$ = "" THEN
  92.          i% = DoMsgBox("Video for Windows does not run on Windows NT 3.1.  Please upgrade your version of Windows.", "Installation Problem", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  93.          WriteToLogFile "ERROR: Microsoft Windows NT running."
  94.          CloseLogFile
  95.          END
  96.       END IF
  97.     END IF
  98.  
  99.     SetBitmap CUIDLL$, LOGO
  100.     SetTitle AppTitle$ + " - Installation Program"
  101.  
  102.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  103.     IF szInf$ = "" THEN
  104.             szInf$ = GetSymbolValue("STF_CWDDIR") + "AOMC.INF"
  105.     END IF
  106.     ReadInfFile szInf$
  107.  
  108.     WinDrive$ = MID$(WinDir$, 1, 1)
  109.     DEST$ = WinDrive$ + ":" + ProgRoot$
  110.  
  111. '    ChkSpace
  112. '    ChkDrive
  113. '    MSOffice
  114.  
  115. '**
  116. '** Purpose:
  117. '**     Show and process WELCOME dialog
  118. '****************************************************************************
  119. WELCOME:
  120.     IF NOAUDIO% = 0 THEN
  121.         r% = PlayWAV(SrcDrive$ + "\welcome.wav")
  122.     END IF
  123.     sz$ = UIStartDlg(CUIDLL$, WELCOME, "FInfoDlgProc", APPHELP, HELPPROC$)
  124.     IF sz$ = "CONTINUE" THEN
  125.         UIPop 1
  126.      ELSE
  127.         UIPopAll
  128.         r% = PlayWAV("")
  129.         GOSUB ASKQUIT
  130.         GOTO WELCOME
  131.     END IF
  132.     r% = PlayWAV("")
  133.  
  134.     'i% = DoMsgBox(DEST$,"",MB_TASKMODAL+MB_OK)
  135.     'Run (SrcDir$ + AppDir$ + AppExeName$)
  136.  
  137. OpProc% = 1
  138. GOTO OPTION1
  139.  
  140. '**
  141. '** Purpose:
  142. '**     Show and process OPTIONS2 dialog
  143. '****************************************************************************
  144. OPTION:
  145.     IF NOAUDIO% = 0 THEN
  146.         r% = PlayWAV(SrcDrive$ + "\option.wav")
  147.     END IF
  148.     SetSymbolValue "RadioDefault", OPTCUR$
  149. OPTL1:
  150.     sz$ = UIStartDlg(CUIDLL$, OPTIONS2, "FRadioDlgProc", APPHELP2, HELPPROC$)
  151.     OPTCUR$ = GetSymbolValue("ButtonChecked")
  152.     IF sz$ = "CONTINUE" THEN
  153.         r% = PlayWAV("")
  154.         UIPop(1)
  155.      ELSEIF sz$ = "REACTIVATE" THEN
  156.         GOTO OPTL1
  157.      ELSE
  158.         UIPopAll
  159.         r% = PlayWAV("")
  160.         GOSUB ASKQUIT
  161.         GOTO OPTL1
  162.     END IF
  163.  
  164. '   MessageBox to show option chosen
  165. '    i% = DoMsgBox(OPTCUR$,"Option selected",MB_TASKMODAL+MB_OK)
  166.  
  167.     IF OPTCUR$ = "1" THEN
  168.         OpProc% = 1
  169.         WriteToLogFile "Option 1 chosen."
  170.         GOTO OPTION1
  171.       ELSEIF OPTCUR$ = "2" THEN
  172.         OpProc% = 2
  173.         WriteToLogFile "Option 2 chosen."
  174.         ChkDrive
  175.         GOTO OPTION2
  176.      ELSE
  177.         OpProc% = 0
  178.         GOSUB ASKQUIT
  179.     END IF
  180.  
  181. '**
  182. '** Purpose:
  183. '**     Process Option 1 from OPTIONS2 dialog.
  184. '****************************************************************************
  185. OPTION1:
  186.  
  187.     Install
  188.  
  189.     GOTO VfW
  190.  
  191. '**
  192. '** Purpose:
  193. '**     Process Option 2 from OPTIONS2 dialog.
  194. '****************************************************************************
  195. OPTION2:
  196.     SetSymbolValue "EditTextIn", DEST$
  197.     SetSymbolValue "EditFocus", "END"
  198.     olddest$ = DEST$
  199. GETPATHL1:
  200.     sz$ = UIStartDlg(CUIDLL$, DESTPATH2, "FEditDlgProc", APPHELP3, HELPPROC$)
  201.  
  202.     IF sz$ = "CONTINUE" THEN
  203.         DEST$ = GetSymbolValue("EditTextOut")
  204.         ''Validate new path.
  205.         IF IsDirWritable(DEST$) = 0 THEN
  206.             UIPop 1
  207.             GOSUB BADPATH
  208.             DEST$ = olddest$
  209.             GOTO GETPATHL1
  210.         END IF
  211.         ''Check drive space
  212.         CheckedDrive$ = MID$(DEST$,1,1)
  213.         IF ChkSpace(CheckedDrive$, FullWantedDiskSize&) = 1 THEN
  214.             UIPop 1
  215.             GOSUB FullTooBig
  216.             DEST$ = olddest$
  217.             GOTO GETPATHL1
  218.         END IF
  219.         UIPop 1
  220.         olddest$ = ""
  221.      ELSEIF sz$ = "REACTIVATE" THEN
  222.         GOTO GETPATHL1
  223.      ELSEIF sz$ = "EXIT" THEN
  224.         UIPop 1
  225.         GOSUB ASKQUIT
  226.         GOTO GETPATHL1
  227.      ELSE
  228.         UIPop 1
  229.         DEST$ = olddest$
  230.         GOTO OPTION
  231.     END IF
  232.  
  233. OPT2PROC:
  234.     CreateDir DEST$, cmoNone
  235.     CreateDir DEST$ + "\AP2EXE", cmoNone
  236.     CreateDir DEST$ + "\DATA", cmoNone
  237.     CreateDir DEST$ + "\SCREENS", cmoNone
  238.  
  239.     UIPopAll
  240.  
  241.     ClearCopyList
  242.     AddSectionFilesToCopyList "AOMC", SrcDir$, WinDir$
  243.     AddSectionFilesToCopyList "ProgEXE", SrcDir$, DEST$ + "\EXE"
  244.     AddSectionFilesToCopyList "ProgTEXT", SrcDir$, DEST$ + "\TEXT"
  245.     AddSectionFilesToCopyList "ProgINTFACE", SrcDrive$ + RT$, DEST$ + "\INTFACE"
  246.     CopyFilesInCopyList
  247.  
  248.     fHandle% = FileOp(0, DEST$ + "\AP2EXE\SAVED.ENV", 0)
  249. '   i% = DoMsgBox(str$(fHandle%),"Open SAVED.ENV",MB_TASKMODAL+MB_OK)
  250.     ret% = FileOp(1, SrcDrive$ + "\", fHandle%)
  251.     ret% = FileOp(1, DEST$ + "\AP2EXE\", fHandle%)
  252.     ret% = FileOp(1, DEST$ + "\DATA\", fHandle%)
  253.     ret% = FileOp(1, DEST$ + "\SCREENS\", fHandle%)
  254.     ret% = FileOp(1, SrcDrive$ + "\AVI\", fHandle%)
  255.     ret% = FileOp(1, SrcDrive$ + "\DIB\", fHandle%)
  256.     ret% = FileOp(1, SrcDrive$ + "\WAV\", fHandle%)
  257. '   i% = DoMsgBox(str$(ret%),"Return from WRITE",MB_TASKMODAL+MB_OK)
  258.     ret% = FileOp(2, "", fHandle%)
  259. '   i% = DoMsgBox(str$(ret%),"Return from CLOSE",MB_TASKMODAL+MB_OK)
  260.  
  261.     Install
  262.  
  263. '**
  264. '** Purpose:
  265. '**     Check for and optionally install MS Video for Windows 1.1
  266. '****************************************************************************
  267. VfW:
  268.     AVI$ = GetIniKeyString$("WIN.INI", "mci extensions", "avi")
  269.     IF AVI$ = "AVIVideo" THEN
  270.         sz$ = UIStartDlg(CUIDLL$, DO_AVI_YN, "FQuitDlgProc", 0, "")
  271.         IF sz$ = "CONTINUE" THEN
  272.             VfW_ANSWER$ = "Yes"
  273.             WriteToLogFile "Answer to VfW question = " + VfW_ANSWER$
  274.             GOSUB InstallVfW
  275.                UIPopAll
  276.          ELSEIF sz$ = "REACTIVATE" THEN
  277.             GOTO VfW
  278.          ELSEIF sz$ = "EXIT" THEN
  279.             VfW_ANSWER$ = "No"
  280.             WriteToLogFile "Answer to VfW question = " + VfW_ANSWER$
  281.             UIPopAll
  282.         END IF
  283.      ELSE
  284.         VfW_ANSWER$ = "Yes"
  285.         WriteToLogFile "Answer to VfW question = " + VfW_ANSWER$
  286.         GOSUB InstallVfW
  287.     END IF
  288.  
  289. '**
  290. '** Purpose:
  291. '**     Ask if user wishes to view OTHERS.HLP
  292. '****************************************************************************
  293. OTHERS:
  294.     IF NOAUDIO% = 0 THEN
  295.         r% = PlayWAV(SrcDrive$ + "\other.wav")
  296.     END IF
  297.     sz$ = UIStartDlg(CUIDLL$, DO_OTHERS_YN, "FQuitDlgProc", 0, "")
  298.     IF sz$ = "CONTINUE" THEN
  299.         r% = PlayWAV("")
  300.         ChDrive(SrcDrive$)
  301.         ChDir(AppDir$)
  302.         Run (WinDir$ + "winhelp " + SrcDrive$ + AppDir$ + "\others.hlp")
  303.         OTHERS_ANSWER$ = "Yes"
  304.         UIPopAll
  305.      ELSEIF sz$ = "REACTIVATE" THEN
  306.         r% = PlayWAV("")
  307.         GOTO OTHERS
  308.      ELSEIF sz$ = "EXIT" THEN
  309.         r% = PlayWAV("")
  310.         OTHERS_ANSWER$ = "No"
  311.         UIPopAll
  312.     END IF
  313.     WriteToLogFile "Answer to OTHERS question = " + OTHERS_ANSWER$
  314.     WriteToLogFile ""
  315.  
  316. '**
  317. '** Purpose:
  318. '**     Last stuff before quiting
  319. '****************************************************************************
  320. CLEANUP:
  321. '   IF OpProc% = 2 THEN
  322. '       MSOffice
  323. '       END IF
  324. '   IF InfoFile$ <> "" THEN
  325. '       i% = DoMsgBox(InfoEXE$ + " " + SrcDrive$ + AppDir$ + InfoFile$,"Info file Run string",MB_TASKMODAL+MB_OK)
  326. '       IF  MajorVer% > 3 THEN
  327. '               Run(Win95InfoEXE$ + " " + SrcDrive$ + AppDir$ + InfoFile$)
  328. '       ELSE
  329. '               Run(Win3xInfoEXE$ + " " + SrcDrive$ + AppDir$ + InfoFile$)
  330. '       END IF
  331. '    END IF
  332.  
  333. '**
  334. '** Purpose:
  335. '**     Handle quit messages from SUBs, et al
  336. '****************************************************************************
  337. QUIT:
  338.     ON ERROR GOTO ERRQUIT
  339.  
  340.     IF ERR = 0 THEN
  341.         IF NOAUDIO% = 0 THEN
  342.             r% = PlayWAV(SrcDrive$ + "\success.wav")
  343.         END IF
  344.         dlg% = EXITSUCCESS
  345.         dialog$ = "EXITSUCCESS"
  346.      ELSEIF ERR = STFQUIT THEN
  347.         IF NOAUDIO% = 0 THEN
  348.             r% = PlayWAV(SrcDrive$ + "\ninstall.wav")
  349.         END IF
  350.         dlg% = EXITQUIT
  351.         dialog$ = "EXITQUIT"
  352. '       VfWFailed% = 1
  353.      ELSEIF ERR = STFPROBLEM THEN
  354.         IF NOAUDIO% = 0 THEN
  355.             r% = PlayWAV(SrcDrive$ + "\problem.wav")
  356.         END IF
  357.         dlg% = EXITQUIT
  358.         dialog$ = "EXITQUIT"
  359.         VfWFailed% = 1
  360.      ELSE
  361.         IF NOAUDIO% = 0 THEN
  362.             r% = PlayWAV(SrcDrive$ + "\fatal.wav")
  363.         END IF
  364.         dlg% = EXITFAILURE
  365.         dialog$ = "EXITFAILURE"
  366.         VfWFailed% = 1
  367.     END IF
  368.     WriteToLogFile ""
  369.     WriteToLogFile "ExitDialog = " + dialog$
  370.     WriteToLogFile ""
  371.  
  372. QUITL1:
  373.     sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
  374.     r% = PlayWAV("")
  375.     IF sz$ = "REACTIVATE" THEN
  376.         GOTO QUITL1
  377.     END IF
  378.     UIPopAll
  379.     IF VfW_ANSWER$ = "Yes" THEN
  380.         IF VfWFailed% = 0 THEN
  381.             GOTO RESTART
  382.         END IF
  383.         CloseLogFile
  384.         END
  385.      ELSE
  386.         CloseLogFile
  387.         END
  388.     END IF
  389.  
  390. ERRQUIT:
  391.     IF NOAUDIO% = 0 THEN
  392.         r% = PlayWAV(SrcDrive$ + "\fatal.wav")
  393.     END IF
  394.     i% = DoMsgBox("Install sources were corrupted, call AOMC Tech Support!", "Install Fatal Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  395.     WriteToLogFile "FATAL ERROR: Install sources were corrupted."
  396.     CloseLogFile
  397.   END
  398.  
  399.  
  400. '****************************************************************************
  401. '**                          SUBs and FUNCTIONS                            **
  402. '****************************************************************************
  403.  
  404. '**
  405. '** Purpose:
  406. '**     Show and process ASKQUIT2 dialog
  407. '****************************************************************************
  408. ASKQUIT:
  409.     sz$ = UIStartDlg(CUIDLL$, ASKQUIT2, "FQuitDlgProc", 0, "")
  410.     IF sz$ = "EXIT" THEN
  411.         UIPopAll
  412.         ERROR STFQUIT
  413.     ELSEIF sz$ = "REACTIVATE" THEN
  414.         GOTO ASKQUIT
  415.     ELSE
  416.         UIPop 1
  417.     END IF
  418.   RETURN
  419.  
  420. '**
  421. '** Purpose:
  422. '**     Show BADPATH dialog
  423. '****************************************************************************
  424. BADPATH:
  425.     sz$ = UIStartDlg(CUIDLL$, BADPATH2, "FInfo0DlgProc", 0, "")
  426.     IF sz$ = "REACTIVATE" THEN
  427.         GOTO BADPATH
  428.     END IF
  429.     UIPop 1
  430.   RETURN
  431.  
  432. '**
  433. '** Purpose:
  434. '**     Install VfW 1.1 stuff
  435. '****************************************************************************
  436. InstallVfW:
  437.  
  438. ''Prepare Copy list and check size
  439.  
  440.     ClearCopyList
  441.  
  442. '' Remove DCISVGA file
  443.     AddSectionFilesToCopyList "remove", SrcDrive$ + RT$, WinSysDir$
  444.  
  445. ''  Runtime files (on Windows disk)
  446. ''  Do not install OLE or MPlayer if on next release of NT or Windows
  447.  
  448.     IF ((NOT OnNT$ = "TRUE") AND MinorVer% < 50) THEN            'These files not necessary on Windows NT
  449.     AddSectionFilesToCopyList "MPlayer", SrcDrive$ + RT$, WinDir$
  450.     AddSectionFilesToCopyList "OLE2", SrcDrive$ + RT$, WinSysDir$
  451.     END IF
  452.     AddSectionFilesToCopyList "VfW Runtime", SrcDrive$ + RT$, WinSysDir$
  453.     AddSectionFilesToCopyList "ACM Drivers", SrcDrive$ + RT$, WinSysDir$
  454.     AddSectionFilesToCopyList "AVICodecs", SrcDrive$ + RT$, WinSysDir$
  455.     IF OnNT$ = "TRUE" THEN
  456.     AddSectionFilesToCopyList "NT MSVideo", SrcDrive$ + RT$, WinSys32Dir$
  457.     ENDIF
  458.  
  459.     'Check windrive diskspace
  460.  
  461.     UIPopAll
  462.     sz$ = UIStartDlg(CUIDLL$, VFWINFO, "FModelessDlgProc", 0, "")
  463.     c% = ShowWaitCursor()
  464.     VfWSizeReq& = GetCopyListCost ("","", "")
  465. '   VfWSizeReq& = VfWSizeReq& + 1
  466. '   i% = DoMsgBox(STR$(VfWSizeReq&), "VfW CopyListCost", MB_OK+MB_TASKMODAL)
  467.     WriteToLogFile "VfW CopyListCost was " + STR$(VfWSizeReq&)
  468.     RestoreCursor c%
  469.        UIPopAll
  470.     IF VfWSizeReq& <> 0 THEN
  471.         GOSUB VfWTooBig
  472. '        ERROR STRQUIT
  473.     END IF
  474.  
  475.     SetRestartDir WinDir$
  476.     CopyFilesInCopyList
  477.     WriteToLogFile "Copied Files in CopyList."
  478.  
  479. ''Updating WIN.INI and SYSTEM.INI
  480. ''Only update SYSTEM.INI  on NT or next version of Windows for other codecs
  481.  
  482. IF ((NOT OnNT$ = "TRUE") AND MinorVer% < 50) THEN
  483.     IF VflatdPresent() = 0 THEN
  484.        CreateSysIniKeyValue WinDir$ + "system.ini", "386Enh", "device", "dva.386", cmoOverwrite
  485.     END IF
  486. END IF
  487.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.CVID", "iccvid.drv", cmoOverwrite
  488.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.MSVC", "msvidc.drv", cmoOverwrite
  489.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.IV32", "ir32.dll", cmoOverwrite
  490.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.IV31", "IR32.dll", cmoOverwrite
  491.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.MRLE", "MSRLE.drv", cmoOverwrite
  492.     I% = DoesIniKeyExist ("system.ini", "Drivers", "VIDC.RT21")
  493.     IF I% = 0  THEN
  494.        CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.RT21", "ir21_r.dll", cmoOverwrite
  495.     END IF
  496.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.YVU9", "ir21_r.dll", cmoOverwrite
  497.     CreateIniKeyValue WinDir$ + "WIN.INI", "mci extensions", "avi", "AVIVideo", cmoOverwrite
  498.     CreateIniKeyValue WinDir$ + "system.ini", "mci", "AVIVideo", "mciavi.drv", cmoOverwrite
  499.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "WaveMapper", "msacm.drv", cmoOverwrite
  500.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "MSACM.msadpcm", "msadpcm.acm", cmoOverwrite
  501.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "MSACM.imaadpcm", "imaadpcm.acm", cmoOverwrite
  502.     CreateIniKeyValue WinDir$ + "control.ini", "drivers.desc", "msacm.drv", "Microsoft Sound Mapper V2.00", cmoOverwrite
  503.     CreateIniKeyValue WinDir$ + "control.ini", "drivers.desc", "msadpcm.acm", "Microsoft ADPCM Codec V2.00", cmoOverwrite
  504.     CreateIniKeyValue WinDir$ + "control.ini", "drivers.desc", "imaadpcm.acm", "Microsoft IMA ADPCM Codec V2.00", cmoOverwrite
  505.     WriteToLogFile "Updated INI files."
  506.  
  507. ''Do not register components not installed with Video for Windows on NT or next version of Windows.
  508. IF ((NOT OnNT$ = "TRUE") AND MinorVer% < 50) THEN
  509.     Run ("regedit.exe /s " + MakePath(WinDir$, "mplayer.reg"))
  510.     Run ("regedit.exe /s " + MakePath(WinSysDir$, "OLE2.reg"))
  511.     Run ("regedit.exe /s " + MakePath(WinSysDir$, "cleanup.reg"))
  512.     WriteToLogFile "Reg Database updated."
  513.  
  514. '' Mplayer
  515.     CreateProgmanItem "Accessories", "Media Player", MakePath(WinDir$, "mplayer.exe"), "", cmoOverwrite
  516.     ShowProgmanGroup  Group$, 1, cmoNone
  517. END IF
  518.  
  519.     Run ("profdisp.exe")
  520.     WriteToLogFile "Profile Display has been run."
  521.     WriteToLogFile ""
  522.  
  523.   RETURN
  524.  
  525.  
  526. '**
  527. '** Purpose:
  528. '**     Builds the copy list and performs all installation operations.
  529. '****************************************************************************
  530. SUB Install STATIC
  531.  
  532.     CWDDir$ = GetSymbolValue("STF_CWDDDIR")
  533.  
  534.     CreateProgmanGroup Group$, "", cmoVital
  535.     ShowProgmanGroup  Group$, 1, cmoNone
  536.     IF OpProc% = 1 THEN
  537. '       i% = DoMsgBox(Group$+", "+AppTitle$+", "+SrcDrive$ + AppDir$ + AppExeName$, "Icon Working Directory - CD", MB_OK+MB_TASKMODAL)
  538.         CreateProgmanItem Group$, AppTitle$, SrcDrive$ + AppDir$ + AppExeName$, "", cmoOverwrite
  539. '       i% = DoMsgBox(Group$+", "+AppTitle$+" ReadMe"+", "+SrcDrive$ + AppDir$ + InfoFile$, "ReadMe...", MB_OK+MB_TASKMODAL)
  540.         CreateProgmanItem Group$, AppTitle$+" ReadMe", SrcDrive$ + AppDir$ + InfoFile$, "", cmoOverwrite
  541. '       i% = DoMsgBox(Group$+", "+OtherAppsTitle$+", "+SrcDrive$ + AppDir$ + AppExeName$, "Others...", MB_OK+MB_TASKMODAL)
  542.         CreateProgmanItem Group$, OtherAppsTitle$, SrcDrive$ + AppDir$ + OtherAppsFile$, "", cmoOverwrite
  543.      ELSEIF OpProc% = 2 THEN
  544. '       i% = DoMsgBox(Group$+", "+AppTitle$+", "+DEST$ + AppDir$ + AppExeName$, "Icon Working Directory - HD", MB_OK+MB_TASKMODAL)
  545.         CreateProgmanItem Group$, AppTitle$, DEST$ + AppDir$ + AppExeName$, "", cmoOverwrite
  546. '       i% = DoMsgBox(Group$+", "+OtherAppsTitle$+", "+SrcDrive$ + AppDir$ + AppExeName$, "Others...", MB_OK+MB_TASKMODAL)
  547.         CreateProgmanItem Group$, OtherAppsTitle$, SrcDrive$ + AppDir$ + OtherAppsFile$, "", cmoOverwrite
  548. '       i% = DoMsgBox(Group$+", "+OtherAppsTitle$+", "+SrcDrive$ + AppDir$ + AppExeName$, "Others...", MB_OK+MB_TASKMODAL)
  549.         CreateProgmanItem Group$, OtherAppsTitle$, SrcDrive$ + AppDir$ + OtherAppsFile$, "", cmoOverwrite
  550.     END IF
  551.  
  552. END SUB
  553.  
  554.  
  555. '**
  556. '** Purpose:
  557. '**     Check for the existance of MSOffice and add program to the Toolbar.
  558. '****************************************************************************
  559. SUB MSOffice STATIC
  560.  
  561.     Filename$ = WinDir$ + "MSOFFICE.INI"
  562.  
  563.     ''Check for INI
  564.     e% = DoesFileExist(Filename$,0)
  565.     if e% = 1 then
  566. '        i% = DoMsgBox("Specified file exists!",Filename$,MB_TASKMODAL+MB_OK)
  567.         WriteToLogFile "MS Office was found and updated."
  568.         WriteToLogFile ""
  569.         for x = 1 to 9
  570.             UA$ = GetIniKeyString(Filename$, "ToolbarOrder", "UserApp"+MID$(STR$(x),2,1))
  571. '            i% = DoMsgBox("UserApp" + STR$(x) + "= " + UA$,"UserApp Strings",MB_TASKMODAL+MB_OK)
  572.             if MID$(UA$,1,17)<>AppTitle$ then
  573.                 if UA$="" then
  574. '                    i% = DoMsgBox("Next available UserApp is" + STR$(x),"UserApp",MB_TASKMODAL+MB_OK)
  575.                     CreateIniKeyValue Filename$, "ToolbarOrder", "UserApp"+MID$(STR$(x),2,1), AppTitle$+","+SrcDrive$+AppDir$+AppExeName$+","+SrcDrive$+AppDir$+",1", cmoNone
  576.                     CreateIniKeyValue Filename$, "BitmapInfo", "UserApp"+MID$(STR$(x),2,1), MSOBitmap$, cmoNone
  577.                     CreateIniKeyValue Filename$, "MenuOrder", "UserApp"+MID$(STR$(x),2,1), AppTitle$+","+SrcDrive$+AppDir$+AppExeName$+","+SrcDrive$+AppDir$+",1", cmoNone
  578.                     exit for
  579.                 end if
  580.              else
  581.                 RemoveIniKey Filename$, "ToolbarOrder", "UserApp"+MID$(STR$(x),2,1), cmoNone
  582.                 RemoveIniKey Filename$, "MenuOrder", "UserApp"+MID$(STR$(x),2,1), cmoNone
  583.                 RemoveIniKey Filename$, "BitmapInfo", "UserApp"+MID$(STR$(x),2,1), cmoNone
  584.                 CreateIniKeyValue Filename$, "ToolbarOrder", "UserApp"+MID$(STR$(x),2,1), AppTitle$+","+SrcDrive$+AppDir$+AppExeName$+","+SrcDrive$+AppDir$+",1", cmoNone
  585.                 CreateIniKeyValue Filename$, "BitmapInfo", "UserApp"+MID$(STR$(x),2,1), MSOBitmap$, cmoNone
  586.                 CreateIniKeyValue Filename$, "MenuOrder", "UserApp"+MID$(STR$(x),2,1), AppTitle$+","+SrcDrive$+AppDir$+AppExeName$+","+SrcDrive$+AppDir$+",1", cmoNone
  587.                 exit for
  588.             end if
  589.         next
  590.       else
  591. '        i% = DoMsgBox("Specified file does NOT exist!",Filename$,MB_TASKMODAL+MB_OK)
  592.         WriteToLogFile "MS Office was not found."
  593.         WriteToLogFile ""
  594.     end if
  595.  
  596. END SUB
  597.  
  598. '**
  599. '** Purpose:
  600. '**
  601. '****************************************************************************
  602. SUB ChkDrive STATIC
  603.  
  604.     cd% = IsDriveNetwork(MID$(DEST$,1,1))
  605.     if cd% = 1 then
  606. '        i% = DoMsgBox("Specified drive IS a network drive!","ChkDrive",MB_TASKMODAL+MB_OK)
  607.         WriteToLogFile "Destination drive is a network drive."
  608.       else
  609. '        i% = DoMsgBox("Specified drive IS NOT a network drive!","ChkDrive",MB_TASKMODAL+MB_OK)
  610.         WriteToLogFile "Destination drive is not a network drive."
  611.     end if
  612.  
  613. END SUB
  614.  
  615. '**
  616. '** Purpose:
  617. '**     Determine space available and compare it to space needed.
  618. '****************************************************************************
  619. SUB ChkSpaceX STATIC
  620.  
  621.     TotalDiskSize& = GetTotalSpaceForDrive(DriveToChk$)
  622.     WriteToLogFile "Total space on " + DriveToChk$ + " drive was " + STR$(TotalDiskSize&)
  623. '    i% = DoMsgBox(STR$(TotalDiskSize&),WinDrive$,MB_TASKMODAL+MB_OK)
  624.     DiskSize& = GetFreeSpaceForDrive(DriveToChk$)
  625.     WriteToLogFile "Free space on " + DriveToChk$ + " drive was " + STR$(DiskSize&)
  626. '    i% = DoMsgBox(STR$(DiskSize&),WinDrive$,MB_TASKMODAL+MB_OK)
  627. '    i% = DoMsgBox(STR$(FullWantedDiskSize&),"FullWantedDiskSize",MB_TASKMODAL+MB_OK)
  628.  
  629. END SUB
  630.  
  631. '**
  632. '** Purpose:
  633. '**     Displays TOOBIG dialog. (VfW)
  634. '****************************************************************************
  635. VfWTooBig:
  636.     VfWFailed% = 1
  637.     sz$ = UIStartDlg(CUIDLL$, TOOBIG, "FQuitDlgProc", 0, "")
  638.     IF sz$ = "EXIT" THEN
  639.         UIPopAll
  640.      ELSEIF sz$ = "REACTIVATE" THEN
  641.         GOTO VfWTooBig
  642.      ELSE
  643.         UIPopAll
  644.     END IF
  645.     i% = DoMsgBox(STR$(VfWSizeReq&) + " bytes more space is required on your Windows drive.", "Needed Windows drive space", MB_OK+MB_TASKMODAL)
  646.     WriteToLogFile "Free space on Windows drive was insufficient."
  647.     WriteToLogFile ""
  648.     ERROR STFPROBLEM
  649.   RETURN
  650.  
  651. '**
  652. '** Purpose:
  653. '**     Displays TOOBIG2 dialog. (Full install of program)
  654. '****************************************************************************
  655. FullTooBig:
  656.     sz$ = UIStartDlg(CUIDLL$, TOOBIG2, "FQuitDlgProc", 0, "")
  657.     IF sz$ = "EXIT" THEN
  658.         UIPopAll
  659.         ERROR STFPROBLEM
  660.      ELSEIF sz$ = "REACTIVATE" THEN
  661.         GOTO FullTooBig
  662.     END IF
  663.     UIPopAll
  664.     WriteToLogFile "Free space on " + CheckedDrive$ + " drive was insufficient."
  665.     WriteToLogFile ""
  666.   RETURN
  667.  
  668. '**
  669. '** Purpose:
  670. '**     Determine if Install has to update through DOS.
  671. '**      Restart Windows: if it has to update ACM from DOS, it restarts Windows automatically
  672. '**      else, it gives the user the choice
  673. '****************************************************************************
  674. RESTART:
  675.     RESTRT% = RestartListEmpty ()
  676.     Exe$ = DEST$ + "\_msrstrt.exe"
  677.     Batch$ = DEST$ + "\_mssetup.bat"
  678.     empty$ = ""
  679. RESTARTL1:
  680.     IF RESTRT% = 0 THEN
  681.         sz$ = UIStartDlg(CUIDLL$, RESTART, "FInfo0DlgProc", 0, "")
  682.         IF sz$ = "REACTIVATE" THEN
  683.             GOTO RESTARTL1
  684.         END IF
  685.         I% = ExitExecRestart ()
  686.         RemoveFile Exe$, cmoForce
  687.         RemoveFile Batch$, cmoForce
  688.         WriteToLogFile ""
  689.         WriteToLogFile "Restart for DOS finish."
  690.         WriteToLogFile ""
  691.         CloseLogFile
  692.        END
  693.      ELSE
  694.         sz$ = UIStartDlg(CUIDLL$, RESTARTII, "FQuitDlgProc", 0, "")
  695.         IF sz$ = "CONTINUE" THEN
  696.             I% = ExitWindowsExec (Exe$, empty$)
  697.             IF I% = 0 THEN
  698.                 GOTO RESTARTL1
  699.              ELSE
  700.                 WriteToLogFile ""
  701.                 WriteToLogFile "Restart accepted."
  702.                 WriteToLogFile ""
  703.                 CloseLogFile
  704.                END
  705.             END IF
  706.          ELSEIF sz$ = "EXIT" THEN
  707.             UIPopAll
  708.             WriteToLogFile ""
  709.             WriteToLogFile "Restart declined."
  710.             WriteToLogFile ""
  711.             CloseLogFile
  712.            END
  713.          ELSEIF sz$ = "REACTIVATE" THEN
  714.             GOTO RESTARTL1
  715.          ELSE
  716.             UIPop 1
  717.         END IF
  718.     END IF
  719.   RETURN
  720.  
  721. '**
  722. '** Purpose:
  723. '**     Appends a file name to the end of a directory path,
  724. '**     inserting a backslash character as needed.
  725. '** Arguments:
  726. '**     szDir$  - full directory path (with optional ending "\")
  727. '**     szFile$ - filename to append to directory
  728. '** Returns:
  729. '**     Resulting fully qualified path name.
  730. '****************************************************************************
  731. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  732.     IF szDir$ = "" THEN
  733.         MakePath = szFile$
  734.      ELSEIF szFile$ = "" THEN
  735.         MakePath = szDir$
  736.      ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  737.         MakePath = szDir$ + szFile$
  738.      ELSE
  739.         MakePath = szDir$ + "\" + szFile$
  740.     END IF
  741.  
  742. END FUNCTION
  743.  
  744. '**
  745. '** Purpose:
  746. '**     Determine space available and compare it to space needed.
  747. '** Arguments:
  748. '**     szDir$  - full directory path (with optional ending "\")
  749. '**     szFile$ - filename to append to directory
  750. '** Returns:
  751. '**     Resulting fully qualified path name.
  752. '****************************************************************************
  753. FUNCTION ChkSpace(DriveToChk$, Size&) STATIC AS INTEGER
  754.  
  755.     TotalDiskSize& = GetTotalSpaceForDrive(DriveToChk$)
  756.     DiskSize& = GetFreeSpaceForDrive(DriveToChk$)
  757.  
  758. '    i% = DoMsgBox(STR$(Size&)+", "+STR$(DiskSize&),DriveToChk$,MB_TASKMODAL+MB_OK)
  759.  
  760.     IF DiskSize& < Size& THEN
  761.         ChkSpace = 1
  762.      ELSE
  763.         ChkSpace = 0
  764.     END IF
  765.  
  766. END FUNCTION
  767.  
  768. '**
  769. '** Purpose:
  770. '**     Determine space available and compare it to space needed.
  771. '** Arguments:
  772. '**     szDir$  - full directory path (with optional ending "\")
  773. '**     szFile$ - filename to append to directory
  774. '** Returns:
  775. '**     Resulting fully qualified path name.
  776. '****************************************************************************
  777. FUNCTION PlayWAV(AudFile$) STATIC AS INTEGER
  778.  
  779.     IF AudFile$ = "" THEN
  780.         aret% = sndPlaySound(NULL, 0)
  781.      ELSE
  782.         aret% = sndPlaySound(AudFile$, SND_ASYNC+SND_NODEFAULT)
  783.     ENDIF
  784.  
  785. '   i% = DoMsgBox(STR$(aret%), "WaveAudio return", MB_OK+MB_TASKMODAL)
  786.  
  787.     IF aret% <> 0 THEN
  788.         PlayWAV = 1
  789.      ELSE
  790.         PlayWAV = 0
  791.     END IF
  792.  
  793. END FUNCTION
  794.  
  795.  
  796. '**
  797. '** Purpose:
  798. '**     Subroutine to get command line and split into arguments.
  799. '**      NumArgs : Number of args found.
  800. '**      Args$() : Array in which to return arguments.
  801. '**      MaxArgs : Maximum number of arguments.
  802. '****************************************************************************
  803. CmdLine:
  804.  
  805.   MaxArgs% = 4
  806.   NOAUDIO% = 0
  807.   NumArgs% = 0
  808.   InIt% = 0
  809.   Cl$ = COMMAND$
  810.   L% = LEN(Cl$)
  811.  
  812.     FOR I% = 1 TO L%     '' Go through the command line a character at a time
  813.         C1$ = MID$(Cl$, I%, 1)
  814.         IF C1$ <> " " THEN     ''Test for a blank
  815.             '' Not a blank
  816.             IF InIt% = 0 THEN     '' Test already inside an argument
  817.                 '' start of a new argument
  818.                 IF NumArgs% = MaxArgs% THEN     '' Test for too many arguments
  819.                     EXIT FOR
  820.                 END IF
  821.                 NumArgs% = NumArgs% + 1
  822.                 InIt% = 1
  823.             END IF
  824.             '' Add character to current argument
  825.             Arg$(NumArgs%) = Arg$(NumArgs%) + UCASE$(C1$)
  826.          ELSE
  827.             '' Found a blank
  828.             InIt% = 0     '' Set 'Not in an argument' flag to 0
  829.         END IF
  830.     NEXT I
  831.     '' Reset COMMAND$ without extra arguments
  832.     COMMAND$ = Arg$(1) + " " + Arg$(2)
  833.  
  834. '    FOR Z% = 1 TO NumArgs%
  835. '       i% = DoMsgBox(COMMAND$ + ", " + Arg$(3), "COMMAND$", MB_OK+MB_TASKMODAL)
  836. '    NEXT
  837.  
  838.   RETURN
  839.  
  840.  
  841.